#ifndef __GAZELLA_BASE_H__
#define __GAZELLA_BASE_H__

#include "logger.h"
#include "pod_info.h"
#include "eventloop.h"
#include "loadconfig.h"

#include <memory>
#include <getopt.h>
#include <libgen.h>
#include <sys/time.h>

namespace Gazella {
class GazellaBase: public std::enable_shared_from_this<GazellaBase> {
public:
    explicit GazellaBase();
    virtual ~GazellaBase() = default;

    std::shared_ptr<GazellaBase> get_sptr();

    static int init(int argc, char *argv[]);

    static std::string new_uuid();
    static struct timeval now(); 

protected:
    Logger *m_logger;
    EventLoop* m_eventloop;
    PodInfo *m_podinfo;
    LoadConfig *m_config;
};
} // namespace Gazella

#endif